/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Entidades.Controlador.Vista;

import Entidades.ControlDAO.UsuarioDAO;
import Entidades.Usuario;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author CristianR cristianemilio14@gmail.com
 */
@ManagedBean
@SessionScoped
public class SesionBean {

    UsuarioDAO usd = new UsuarioDAO();
    Usuario usu;
    private String usuario;
    private String clave;
    int contarAx=0;
    /**
     * Creates a new instance of SesionBean
     */
    public SesionBean() {
    }

    public void autenticar() {
        try {
            FacesContext contex = FacesContext.getCurrentInstance();
            usu = usd.buscarUsu(usuario, clave);
            if (usu != null) {
                contex.getExternalContext().getSessionMap().put("id_usuario",
                        usu.getId());
                contex.getExternalContext().getSessionMap().put("nombre",
                        usu.getNombre());
                contex.getExternalContext().getSessionMap().put("apellido",
                        usu.getApellido());
                contex.getExternalContext().getSessionMap().put("usuario",
                        usu.getUsuario());
                contex.getExternalContext().getSessionMap().put("isSesionAlive", true);
                contex.getExternalContext().getSessionMap().put("tipo", usu.getTipo());
                if (usu.getTipo() == 3) {

                    contex.getExternalContext().redirect("administrador.xhtml");
                } else {
                    if (usu.getTipo() == 2) {

                        contex.getExternalContext().redirect("empleado.xhtml");
                    } else {
                        if (usu.getTipo() == 1) {

                            contex.getExternalContext().redirect("proveedor.xhtml");
                        } else {
                            if (usu.getTipo() == 0) {

                                contex.getExternalContext().redirect("cliente.xhtml");
                            }
                        }
                    }

                }

            } else {
                contex.addMessage(null, new FacesMessage("Usuario o Contraseña Incorrecta", "Porfavor verifique los campos..."));
            }

        } catch (IOException exp) {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(SesionBean.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }

    public void inicio() {
        if (contarAx == 0) {
            usd.contar();
            contarAx = 1;
        }
    }

    public UsuarioDAO getUsd() {
        return usd;
    }

    public void setUsd(UsuarioDAO usd) {
        this.usd = usd;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getClave() {
        return clave;
    }

    public void setClave(String clave) {
        this.clave = clave;
    }

}
